Electronic circuit designs may be prepared using any of a variety of approaches. In one approach, the designer creates a graphical high level block diagram model of the system using a tool such as the System Generator for DSP from XILINX®, Inc., which enables use of the SIMULINK® model-based environment from The MATHWORKS®. These types of tools provide a graphical user interface (GUI) for preparing, simulating, and even implementing a circuit design. Basic building blocks are instantiated, connected, and combined into larger blocks of the design via the GUI. Each block generally has at least one input signal, at least one output signal, and an equation that defines the relationship between the input and output signals.
In another approach, a design can be specified in a hardware description language (HDL) such as VHDL or Verilog. In an HDL approach the designer has a greater level of control over the eventual implementation. However, when using an HDL the designer may sacrifice the benefits associated with the ability to abstract the design at a high level as provided by a GUI approach.
A scripting language such as MATLAB provides a higher level of abstraction for creating a design than does an HDL. A scripting language supports flexible parameterization through which, for example, components of a design may be easily scaled for different applications. However, scripting languages may be cumbersome for quickly assembling components of a circuit design. Other high-level programming languages such as JAVA™, JAVASCRIPT™, C++, and TCL (Tool Command Language), are also sometimes used to create circuit designs. However, developing circuit designs using these languages has the same drawbacks as using MATLAB.
A GUI-based modeling system allows a designer to easily abstract and assemble different parts of a design. However, for designs that contain hundreds to thousands of blocks, and for designs in which the number of blocks and connections change subject to design parameters, it may be more straightforward for the designer to specify the design and define the parameters that control the numbers of blocks and connections with a script-based specification rather than with a GUI-based system.
Furthermore, designs are often prepared with the collaboration of several designers preparing different components of the overall design. Different designers may use different design systems or design on different levels of abstraction. Because changes to one component can adversely affect the operation of others, it is desirable to compare and track changes between various design tools.